home *** CD-ROM | disk | FTP | other *** search
/ Programming Languages Suite / ProgramD2.iso / Borland / Borland C++ For TASM / THUNK95.PAK / TOOLS.H < prev   
C/C++ Source or Header  |  1996-02-21  |  2KB  |  76 lines

  1. //----------------------------------------------------------------------------
  2. // Thunk95 example program
  3. // Copyright (c) 1996 by Borland International, All Rights Reserved
  4. //----------------------------------------------------------------------------
  5. #ifndef TOOLS_H
  6. #define TOOLS_H
  7.  
  8. #if !defined(_WINDOWS_) && !defined(__WINDOWS_H)
  9. #include <windows.h>
  10. #endif
  11.  
  12. //
  13. // Since the Microsoft thunk compiler does not provide any support for
  14. // C++ name mangling, thunking C++ functions and objects would be an
  15. // onerous task.
  16. //
  17. #if defined(__cplusplus)
  18. extern "C" {
  19. #endif
  20.  
  21. //
  22. // A structure containing various data types
  23. //
  24. enum EmpStatus { UNDEF=0, NEWHIRE, WAGE, SALARY, QUIT, RELEASED };
  25.  
  26. //
  27. // Since the thunk compiler does not support enum's, we will represent
  28. // it in the thunk script as type int and then leave the Borland
  29. // compiler's "Treat enums as ints" in its default state of on.
  30. //
  31.  
  32. typedef struct tagEmpRecord
  33.    {
  34.    unsigned short empNum;
  35.    char           name [20];
  36.    char           family [20];
  37.    enum EmpStatus status;
  38.    int            dept;
  39.    float          wage;
  40.    double         ytdEarnings;
  41.    unsigned long  ssn;
  42.    } EmpRecord;
  43.  
  44. typedef EmpRecord* LpEmpRecord;
  45.  
  46. //
  47. // These are the functions exported by the 32-bit DLL to the calling
  48. // 32-bit application.
  49. //
  50. #if defined(__FLAT__)
  51. long PASCAL __export Multiply(int i, long l);
  52. long double PASCAL __export MultiplyReal(double v1, double v2);
  53. int PASCAL __export StrTableSize(void);
  54. bool PASCAL __export StringLookup(int index, LPSTR bfr);
  55. int PASCAL __export EmpCount();
  56. bool PASCAL __export GetRecord(int index, EmpRecord* rec);
  57. #endif
  58.  
  59. //
  60. // The are the thunked functions exported from the 16-bit DLL.
  61. //
  62. long PASCAL __export Multiply16(int i, long l);
  63. void PASCAL __export MultiplyReal16(double v1, double v2, long double* result);
  64. int PASCAL __export StrTableSize16(void);
  65. bool PASCAL __export StringLookup16(int index, LPSTR bfr);
  66. int PASCAL __export EmpCount16(void);
  67. bool PASCAL __export GetRecord16(int index, EmpRecord* rec);
  68.  
  69.  
  70. #if defined(__cplusplus)
  71. }
  72. #endif
  73.  
  74.  
  75. #endif   // TOOLS_H
  76.